<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018\8\31 0031
 * Time: 15:29
 */

namespace app\Lib\InterfaceIn\Role;


use app\Lib\InterfaceIn\User\UserHandle;

interface RoleHandle
{
    public function __construct($roleId,$cache = false);

    /**
     * @return mixed
     */
    public function getRoleId();
    /**
     * 获取等级
     * @return int
     */
    public function getLevel();


    /**
     * 获取父级类
     * @return RoleHandle
     */
    public function getParentClass();

    /**
     * 获取角色名称
     * @return string
     */
    public function getName();

    /**
     * 获取状态中文名称
     * @return string
     */
    public function getStatusStr();

    /**
     * 获取创建时间
     * @return string
     */
    public function getCreateTime();

    /**
     * 获取创建人对象
     * @return UserHandle
     */
    public function getCreateUserObj();
    /**
     * 获取修改人对象
     * @return UserHandle
     */
    public function getSaveUserObj();

    /**
     * 获取修改时间
     * @return string
     */
    public function getSaveTime();

    /**
     * 获取排序
     * @return int
     */
    public function getListOrder();

    /**
     * 获取备注
     * @return string
     */
    public function getRemark();

    /**
     * 获取创建人名称
     * @return string
     */
    public function getCreateName();

    /**
     * 获取修改人
     * @return string
     */
    public function getSaveUserName();

    /**
     * 获取别名
     * @return string
     */
    public function getRoleAlias();

    /**
     * 删除类的缓存
     * @return bool
     */
    public function delAllCache();

    /**
     * 角色判断类
     * @return RoleJudgeHandle
     */
//    public function getRoleJudgeClass();
    /**
     * 删除单个字段缓存
     * @param $field
     * @return bool
     */
    public function delSingleCache($field);

    /**
     * 判断是否是超级管理员
     * @return bool
     */
    public function isSuperAdministrator();

    /**
     * 验证后台是否可以登录
     * @return bool
     */
    public function isAdminLogin();

    /**
     * 设计师
     * @return bool
     */
    public function isDesigner();

    /**
     * 设计总监
     * @return mixed
     */
    public function isDesignDirector();

    /**
     * 工地监理
     * @return mixed
     */
    public function isEngineeringDepartmentSupervision();

}